<?php

class WucBarraProgreso extends TTemplateControl {
//<editor-fold defaultstate="collapsed" desc="Variables de Configuracion">
  //variables privadas
  const NOMBRE_WEB_USER_CONTROL = "wucPorcentaje";
  const NOMBRE_ARCHIVO_JS = "wucPorcentaje.js";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getTitulo() { return $this->getViewState("Titulo"); }
  public function setTitulo($value) { $this->setViewState("Titulo", $value); }

  public function getMensaje() { return $this->getViewState("Mensaje"); }
  public function setMensaje($value) { $this->setViewState("Mensaje", $value); }

  public function getPorcentaje() { return $this->getViewState("Porcentaje"); }
  public function setPorcentaje($value) { $this->setViewState("Porcentaje", $value); }

  public function getWidthBarra() { return $this->getViewState("WidthBarra"); }
  public function setWidthBarra($value) { $this->setViewState("WidthBarra", $value); }

  public function getHeightBarra() { return $this->getViewState("HeightBarra"); }
  public function setHeightBarra($value) { $this->setViewState("HeightBarra", $value); }

  public function getPaddingTopBloque() { return $this->getViewState("PaddingTopBloque"); }
  public function setPaddingTopBloque($value) { $this->setViewState("PaddingTopBloque", $value); }

  public function getPaddingBottomBloque() { return $this->getViewState("PaddingBottomBloque"); }
  public function setPaddingBottomBloque($value) { $this->setViewState("PaddingBottomBloque", $value); }

  public function getPorcentajeMaximoRojo() { return $this->getViewState("PorcentajeMaximoRojo"); }
  public function setPorcentajeMaximoRojo($value) { $this->setViewState("PorcentajeMaximoRojo", $value); }

  public function getPorcentajeMaximoAmarillo() { return $this->getViewState("PorcentajeMaximoAmarillo"); }
  public function setPorcentajeMaximoAmarillo($value) { $this->setViewState("PorcentajeMaximoAmarillo", $value); }

  public function getPaddingTopTexto() { return $this->getViewState("PaddingTopTexto"); }
  public function setPaddingTopTexto($value) { $this->setViewState("PaddingTopTexto", $value); }

  public function getPaddingLeftTexto() { return $this->getViewState("PaddingLeftTexto"); }
  public function setPaddingLeftTexto($value) { $this->setViewState("PaddingLeftTexto", $value); }

  public function getPixelesMenosPorcentajeTotal() { return $this->getViewState("PixelesMenosPorcentajeTotal"); }
  public function setPixelesMenosPorcentajeTotal($value) { $this->setViewState("PixelesMenosPorcentajeTotal", $value); }

  public function getUsarColorDefecto() { return $this->getViewState("UsarColorDefecto"); }
  public function setUsarColorDefecto($value) { $this->setViewState("UsarColorDefecto", $value); }

  public function getCssClassColorDefecto() { return $this->getViewState("CssClassColorDefecto"); }
  public function setCssClassColorDefecto($value) { $this->setViewState("CssClassColorDefecto", $value); }

  public function getCssClassColorFondoDefecto() { return $this->getViewState("CssClassColorFondoDefecto"); }
  public function setCssClassColorFondoDefecto($value) { $this->setViewState("CssClassColorFondoDefecto", $value); }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * inicializa valores de los controles
   * @author VSR, 01/01/2011
   */
  protected function inicializaControles() {
    $titulo = (Utilidades::isNullOrEmpty($this->Titulo)) ? "" : $this->Titulo;
    $mensaje = (Utilidades::isNullOrEmpty($this->Mensaje)) ? "" : $this->Mensaje;
    $widthBarra = (Utilidades::isNullOrEmpty($this->WidthBarra)) ? "200" : str_replace("px", "", $this->WidthBarra);
    $heightBarra = (Utilidades::isNullOrEmpty($this->HeightBarra)) ? "15" : str_replace("px", "", $this->HeightBarra);
    $porcentaje = (Utilidades::isNullOrEmpty($this->Porcentaje)) ? "0" : $this->Porcentaje;
    $porcentajeMaximoRojo = (Utilidades::isNullOrEmpty($this->PorcentajeMaximoRojo)) ? "50" : $this->PorcentajeMaximoRojo;
    $porcentajeMaximoAmarillo = (Utilidades::isNullOrEmpty($this->PorcentajeMaximoAmarillo)) ? "80" : $this->PorcentajeMaximoAmarillo;
    $paddingTopTexto = (Utilidades::isNullOrEmpty($this->PaddingTopTexto)) ? "2" : str_replace("px", "", $this->PaddingTopTexto);
    $paddingLeftTexto = (Utilidades::isNullOrEmpty($this->PaddingLeftTexto)) ? "10" : str_replace("px", "", $this->PaddingLeftTexto);
    $paddingTopBloque = (Utilidades::isNullOrEmpty($this->PaddingTopBloque)) ? "" : str_replace("px", "", $this->PaddingTopBloque);
    $paddingBottomBloque = (Utilidades::isNullOrEmpty($this->PaddingBottomBloque)) ? "" : str_replace("px", "", $this->PaddingBottomBloque);
    $pixelesMenosPorcentajeTotal = (Utilidades::isNullOrEmpty($this->PixelesMenosPorcentajeTotal)) ? "2" : str_replace("px", "", $this->PixelesMenosPorcentajeTotal);
    $classColorBarra = "";
    $paddingBloque = "";

    //obtiene parte entera del porcentaje
    $porcentajeParteEntera = (int)str_replace(",", ".", $porcentaje);
    $porcentajeFloat = (float)str_replace(",", ".", $porcentaje);
    //si el porcentaje es mayor a 100, entonces lo deja en 100
    $porcentajeParteEntera = ($porcentajeParteEntera > 100) ? 100 : $porcentajeParteEntera;
    //calcula el ancho del porcentaje, segun el ancho maximo de la barra
    $widthBarraProgreso = ((int)$widthBarra * $porcentajeParteEntera) / 100;
    //obtiene la parte entera
    $widthBarraProgreso = (int)$widthBarraProgreso;
    //si el porcentaje es igual a 100, entonces le resta 2 al ancho, por el estilo del css
    $widthBarraProgreso = ($porcentajeParteEntera == 100) ? $widthBarraProgreso-(int)$pixelesMenosPorcentajeTotal : $widthBarraProgreso;

    //obtiene el color de la barra segun el porcentaje
    $porcentajeMaximoRojo = (float)str_replace(",", ".", $porcentajeMaximoRojo);
    $porcentajeMaximoAmarillo = (float)str_replace(",", ".", $porcentajeMaximoAmarillo);

    if($porcentajeFloat <= $porcentajeMaximoRojo) {
      $classColorBarra = "wucbp-BarraProgesoRojo";
    } elseif ($porcentajeFloat > $porcentajeMaximoRojo && $porcentajeFloat <= $porcentajeMaximoAmarillo) {
      $classColorBarra = "wucbp-BarraProgesoAmarillo";
    } else {
      $classColorBarra = "wucbp-BarraProgesoVerde";
    }

    if($widthBarraProgreso == 0){
      $this->pnlFondoBarra->Style = "width:".$widthBarra."px; height:".$heightBarra."px;";
      $this->pnlBarra->Visible = false;
    } else {
      $this->pnlFondoBarra->Style = "width:".$widthBarra."px;";
      $this->pnlBarra->Visible = true;
      $this->pnlBarra->Style = "width:".$widthBarraProgreso."px; height:".$heightBarra."px;";
      $this->pnlBarra->CssClass = $classColorBarra;
    }
    $this->lblTitulo->Text = $titulo;
    $this->lblMensaje->Text = $mensaje;
    $this->lblPorcentaje->Text = $porcentaje."%";
    $this->pnlTextoPorcentaje->Style = "padding-top:".$paddingTopTexto."px; padding-left:".$paddingLeftTexto."px;";

    //coloca el padding al control
    if(!Utilidades::isNullOrEmpty($paddingTopBloque)) { $paddingBloque .= "padding-top:".$paddingTopBloque."px"; }
    if(!Utilidades::isNullOrEmpty($paddingBottomBloque)) { $paddingBloque .= "padding-bottom:".$paddingBottomBloque."px"; }
    if(!Utilidades::isNullOrEmpty($paddingBloque)) { $this->pnlBloque->Style = $paddingBloque; }

    //verifica si usa color por defecto
    $usarColorDefecto = "true";
    if(!Utilidades::isNullOrEmpty($this->getUsarColorDefecto())) { $usarColorDefecto = (strtoupper($this->getUsarColorDefecto()) == "TRUE" || $this->getUsarColorDefecto() == "1") ? "true" : "false"; }
    if ($usarColorDefecto == "true"){
      $classColorDefecto = (Utilidades::isNullOrEmpty($this->CssClassColorDefecto)) ? "wucbp-BarraProgesoVerde" : $this->CssClassColorDefecto;
      $classColorFondoDefecto = (Utilidades::isNullOrEmpty($this->CssClassColorFondoDefecto)) ? "wucbp-BarraProgesoFondoVerde" : $this->CssClassColorFondoDefecto;
      $this->pnlBarra->CssClass = $classColorDefecto;
      $this->pnlFondoBarra->CssClass = $classColorFondoDefecto;
    }

  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function  onLoad($param) {
    parent::onLoad($param);
    //registra los bloques javascript respectivos
    $this->inicializaControles();
  }
//</editor-fold>


}

?>
